package com.zhs.smartmall.order.dto;

import io.swagger.annotations.ApiModel;
import lombok.*;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

/**
 *
 * @author zhenghuisheng
 * @since 2023-11-12
 */
@Data
@ApiModel(value = "OmsOrderDto")
public class OmsOrderDto implements Serializable {
        //表字段
        private static final long serialVersionUID = 1L;
        @JsonSerialize(using = ToStringSerializer.class)
        @ApiModelProperty(value = "主键")
        private Long id;

        @JsonSerialize(using = ToStringSerializer.class)
        @ApiModelProperty(value = "member_id")
        private Long memberId;

        @ApiModelProperty(value = "订单号")
        private String orderSn;

        @JsonSerialize(using = ToStringSerializer.class)
        @ApiModelProperty(value = "使用的优惠券")
        private Long couponId;

        @ApiModelProperty(value = "create_time")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date createTime;

        @ApiModelProperty(value = "用户名")
        private String memberUsername;

        @ApiModelProperty(value = "订单总额")
        private java.math.BigDecimal totalAmount;

        @ApiModelProperty(value = "应付总额")
        private java.math.BigDecimal payAmount;

        @ApiModelProperty(value = "运费金额")
        private java.math.BigDecimal freightAmount;

        @ApiModelProperty(value = "促销优化金额（促销价、满减、阶梯价）")
        private java.math.BigDecimal promotionAmount;

        @ApiModelProperty(value = "积分抵扣金额")
        private java.math.BigDecimal integrationAmount;

        @ApiModelProperty(value = "优惠券抵扣金额")
        private java.math.BigDecimal couponAmount;

        @ApiModelProperty(value = "后台调整订单使用的折扣金额")
        private java.math.BigDecimal discountAmount;

        @ApiModelProperty(value = "支付方式【1->支付宝；2->微信；3->银联； 4->货到付款；】")
        private Integer payType;

        @ApiModelProperty(value = "订单来源[0->PC订单；1->app订单]")
        private Integer sourceType;

        @ApiModelProperty(value = "订单状态【0->待付款；1->待发货；2->已发货；3->已完成；4->已关闭；5->无效订单】")
        private Integer status;

        @ApiModelProperty(value = "物流公司(配送方式)")
        private String deliveryCompany;

        @ApiModelProperty(value = "物流单号")
        private String deliverySn;

        @ApiModelProperty(value = "自动确认时间（天）")
        private Integer autoConfirmDay;

        @ApiModelProperty(value = "可以获得的积分")
        private Integer integration;

        @ApiModelProperty(value = "可以获得的成长值")
        private Integer growth;

        @ApiModelProperty(value = "发票类型[0->不开发票；1->电子发票；2->纸质发票]")
        private Integer billType;

        @ApiModelProperty(value = "发票抬头")
        private String billHeader;

        @ApiModelProperty(value = "发票内容")
        private String billContent;

        @ApiModelProperty(value = "收票人电话")
        private String billReceiverPhone;

        @ApiModelProperty(value = "收票人邮箱")
        private String billReceiverEmail;

        @ApiModelProperty(value = "收货人姓名")
        private String receiverName;

        @ApiModelProperty(value = "收货人电话")
        private String receiverPhone;

        @ApiModelProperty(value = "收货人邮编")
        private String receiverPostCode;

        @ApiModelProperty(value = "省份/直辖市")
        private String receiverProvince;

        @ApiModelProperty(value = "城市")
        private String receiverCity;

        @ApiModelProperty(value = "区")
        private String receiverRegion;

        @ApiModelProperty(value = "详细地址")
        private String receiverDetailAddress;

        @ApiModelProperty(value = "订单备注")
        private String note;

        @ApiModelProperty(value = "确认收货状态[0->未确认；1->已确认]")
        private Integer confirmStatus;

        @ApiModelProperty(value = "删除状态【0->未删除；1->已删除】")
        private Integer deleteStatus;

        @ApiModelProperty(value = "下单时使用的积分")
        private Integer useIntegration;

        @ApiModelProperty(value = "支付时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date paymentTime;

        @ApiModelProperty(value = "发货时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date deliveryTime;

        @ApiModelProperty(value = "确认收货时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date receiveTime;

        @ApiModelProperty(value = "评价时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date commentTime;

        @ApiModelProperty(value = "修改时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date modifyTime;

        @ApiModelProperty(value = "修改时间")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date updateTime;

        @ApiModelProperty(value = "是否删除")
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date isDeleted;

        //=====================自定义字段=====================

        //id
        private List<String> idList;
}
